
from os import scandir
from typing import List
import paddlehub as hub
import sys 
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

# lac = hub.Module(name="lac", version="2.2.0")
# lac = hub.Module(name="lac")

# test_text = ["1996年，曾经是微软员工的加布·纽维尔和麦克·哈灵顿一同创建了Valve软件公司。",
#     "螺旋桨PaddleHelix，是基于百度飞桨深度学习框架开发的生物计算工具和平台。 螺旋桨针对生信&计算机交叉学科的学习者、研究者和合作伙伴，提供一整套开源工具集和计算平台，支持构建针对新药研发、疫苗设计、精准医疗场景的技术方案"]
# word_tags = lac.lexical_analysis(texts = test_text)


# for word_tag in word_tags:
#     for word, tag in zip(word_tag['word'],word_tag['tag']):
#         if tag in ['PER' ,'TIME' ,'ORG']:
#             print(word , tag)

from LAC import LAC

def single_sentence_seg(texts:List[str]):
    # 装载分词模型
    lac = LAC(mode='seg')
    # 批量样本输入, 输入为多个句子组成的list，平均速率会更快
    seg_result = lac.run(texts)[0]


    return "##".join(seg_result)



def single_sentence_key(texts:List[str] ,top_k = 5):
    # 装载词语重要性模型
    lac = LAC(mode='rank')
    # 批量样本输入, 输入为多个句子组成的list，平均速率会更快
    rank_result = lac.run(texts)[0]

    res = []
    for text , tag , score in zip(rank_result[0] ,rank_result[1] ,rank_result[2]):
        if tag in ['TIME','LOC','ORG' ,'PER'] or score >=2 :
            res.append((text , tag , score))
            
    
    res = sorted(res , key=lambda x :x[2],reverse=True)
    
    res = [x[0] for x in res[:top_k]]
    return "##".join(res)
    
    
if __name__ == '__main__':

    texts = ["刚看小策这个系列的时候有些不太明白，明明可以找些更年轻的演员来拍，只要够夸张，一定有更多的流量。直到看到这个花絮彩蛋，老人凝望着老旧的胡同口，满怀期待的样子，才发觉，原来这个系列里的很多老人，亲人都不在身边了，对于这些老人，能有拍视频这样的事情做，会让他们孤单的生活好起来吧？至少还有人会想起他们，记得他们，而不是日复一日，年复一年的期待着，又落空，只能在回忆里，感慨岁月时光的流逝，回忆儿女在身边时的那种被需要的幸福"]
        
    # print(single_sentence_seg(texts))

    print(single_sentence_key(texts))